package com.xg.common.result;

import com.xg.common.constant.CommonStatusEnum;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.ArrayList;
import java.util.List;

@Data
@Accessors(chain = true)
public class ApiResult<T> {

    private int code;

    private String message;

    private T data;

    /**
     * 成功响应的方法-无返回值
     * @return
     */
    public static ApiResult success(){
        return new ApiResult().setCode(CommonStatusEnum.SUCCESS.getCode()).setMessage(CommonStatusEnum.SUCCESS.getMsg()).setData("");
    }

    /**
     * 成功响应的方法
     * @param data
     * @return
     * @param <T>
     */
    public static <T> ApiResult success(T data){
        return new ApiResult().setCode(CommonStatusEnum.SUCCESS.getCode()).setMessage(CommonStatusEnum.SUCCESS.getMsg()).setData(data);
    }

    /**
     * 统一失败信息
     * @param data
     * @return
     * @param <T>
     */
    public static <T> ApiResult error(T data){
        return new ApiResult().setData(data);
    }

    /**
     * 自定义失败信息 错误码，提示信息
     * @param code
     * @param msg
     * @return
     */
    public static ApiResult error(int code,String msg){
        return new ApiResult().setCode(code).setMessage(msg);
    }

    /**
     * 自定义失败    错误码，提示信息，具体错误
     * @param code
     * @param msg
     * @param data
     * @return
     */
    public static ApiResult error(int code,String msg,String data){
        return new ApiResult().setCode(code).setMessage(msg).setData(data);
    }

    public static void main(String[] args) {
        ApiResult.error(CommonStatusEnum.CAR_EMPTY.getCode(), CommonStatusEnum.CAR_EMPTY.getMsg());
        ApiResult.success();
        ArrayList<Object> list = new ArrayList<>();
        ApiResult.success(list);
    }
}
